//正确，但是会超出内存限制
int majorityElement(int* nums, int numsSize) {
    int max = 0, min = 0;
    for(int i = 0; i < numsSize; ++i){
        if(max < nums[i])
            max = nums[i];
        if(min > nums[i])
            min = nums[i];
    }
    int count = max - min + 1;
    int k = numsSize / 2;
    int ans = 0;
    int *hash = (int*)malloc(sizeof(int) * count);
    memset(hash, 0, sizeof(int) * count);
    for(int i = 0; i < numsSize; i++){
        hash[nums[i] - min]++;
    }
    for(int i = 0; i < count; i++){
        if(hash[i] > k){
            ans = i + min;
            break;
        }    
    }
    return ans;
}

//qsort + 顺序查找
int cmp(const void* pa, const void* pb){
    return (*(int*)pa - *(int*)pb);
}
int majorityElement(int* nums, int numsSize) {
    qsort(nums, numsSize, sizeof(int), cmp);
    int count = 0, k = numsSize / 2, c0 = nums[0];
    for(int i = 0; i < numsSize; i++){
        if(nums[i] == c0){
            count++;
            if(count > k)
                return c0;
        }
        else{
            c0 = nums[i];
            count = 1;
        }
    }
    return c0;
}

/*给定一个大小为 n 的数组 nums ，返回其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的，并且给定的数组总是存在多数元素。*/